<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
// 函数自己调用自己，称为递归调用
/*  function fun(){
    console.log('递归调用')
    // fun(); //死循环
  }
  fun();*/

//一般结合条件来用
/*  var i=0;
  function fun(){
	  
    if(i==5){
       return;
    }
    console.log('递归调用'+i)
    i++;
    fun();
  }
  fun();*/

// 1.递归求1-100的和
/*   var i=0;
   var total=0;
   function sum(){
      if(i==100){
        return;
      }
      i++;
      total+=i;
      sum()
   }
  sum();
  document.write(total)*/

  // 升级方法2
  function sum(n){
    if(n==1) {return 1}
    return n+sum(n-1)
  }
  document.write(sum(100))


// 2. 用递归来求 5 的阶乘  :5*4*3*2*1

    //传统方法
	/*	for(var i=1; i<=5; i++){
      var k=1;
			for(var j=1; j<=i; j++){
				 k*=j;
			}

		}
		document.write(k);*/

    //递归方法
   /* function func(n) {
        if (n == 1) {
            return 1;
        }
        // func(n-1) 因为传递的参数是 n-1,那么每次都求 (n-1) 的阶乘
        return n * func(n-1);  // 5*4*3*2*1
    }
    document.write(func(5));*/
</script>
</body>
</html>